package com.cloud.force.api.service;

import java.util.List;
import java.util.Map;

import com.cloud.force.api.bean.RecForceForm;
import com.cloud.force.api.bean.RecForceSearchBean;
import com.cloud.force.api.bean.RecForceSearchCriteria;
import com.cloud.force.api.bean.RecForceStatCriteria;
import com.github.pagehelper.PageInfo;

public interface RecForceService {
	
	/**
	 * 保存或更新处罚案卷信息
	 * @param punish
	 * @return
	 */
	RecForceForm saveUpdate(RecForceForm punish);

	/**
	 * 加载案卷信息
	 * @param recId
	 * @return
	 */
	RecForceForm load(long recId);

	/**
	 * 案件分页查询
	 * @param criteria
	 * @return
	 */
	PageInfo<RecForceSearchBean> searchForcePage(RecForceSearchCriteria criteria);
	
	/**
	 * 执法案件统计
	 * @param criteria
	 * @return
	 */
	PageInfo<Map<String, Object>> statForcePage(RecForceStatCriteria criteria);
	
	/**
	 * 案卷作废
	 * @param recId
	 */
	void cancel(Long recId);

	/**
	 * 案件指数 forscreen
	 * @param start
	 * @param end
	 * @param unitCode
	 * @param type
	 * @param recType
	 * @return
	 */
	List<Map<String,Object>> getRecForceByDate(String start, String end, String unitCode, Integer type, Integer recType);

	/**
	 * 案件问题来源  for screen
	 * @param start
	 * @param end
	 * @param unitCode
	 * @param recType
	 * @return
	 */
	List<Map<String,Object>> getLegalCaseSource(String start, String end, String unitCode, Integer recType);

	/**
	 * 案件区域分布  for screen
	 * @param start
	 * @param end
	 * @param unitCode
	 * @param recType
	 * @return
	 */
	List<Map<String,Object>> getLegalCaseRegion(String start, String end, String unitCode,String regionCode, Integer recType);

	/**
	 * 案件top5  for screen
	 * @param start
	 * @param end
	 * @param unitCode
	 * @param recType
	 * @return
	 */
	List<Map<String,Object>> getLegalCaseDomain(String start, String end, String unitCode, Integer recType, Integer num);

	/**
	 * 大屏首页悬浮栏
	 * @param start
	 * @param end
	 * @return
	 */
	Map<String,Object> getLegalCaseGeneral(String start, String end , String unitCode);


	/**
	 * 法律法规top5
	 * @return
	 */
	List<Map<String,Object>> getLawCaseTop5(String start, String end, String unitCode, Integer recType);

	/**
	 * 法律法规top
	 *
	 * @return
	 */
	List<Map<String, Object>> getLawCaseTop(String start, String end, String unitCode, Integer num);

	/**
	 * 根据regionCode查询所有已有违法事实的行政强制
	 * @param start
	 * @param end
	 * @param unitCode
	 * @param regionid
	 * @return
	 */
    List<Map<String,Object>> getBasisCodeByRegionCode(String start, String end, String unitCode, Long regionid);

	/**
	 * 法规使用统计
	 * @param start
	 * @param end
	 * @param unitCode
	 * @return
	 */
	List<Map<String, Object>> getLawUseStat(String start, String end, String unitCode);

	/**
	 * 行政强制案由使用统计
	 * @param start
	 * @param end
	 * @param unitCode
	 * @param lawID
	 * @return
	 */
	List<Map<String, Object>> getCauseUseStat(String start, String end, String unitCode, String lawID);

    Map<String,Object> getLawDynamicsInfo(String unitCode);

    List<Map<String,Object>> getForceByRegionId(String start, String end, String unitCode,Integer recType);
	/**
	 * 返回任务号
	 */
	String calculate(String recTypeId);
}
